const POINT_STYLE = {
  Angle: 0,
  Color: 16, // 设置子图的颜色
  Space: 0,
  SymHeight: 5, // 设置子图的高
  SymID: 30, // 子图号 SymID
  SymWidth: 5, // 设置子图的宽度
}
/**
 * @param {array} position   添加点要素位置
 * @param {array} attr [{key:'name,type:'string',value:'武汉'}]
 * @param {object} service {docName,layerId} docName 地图文档服务名 layerId 要素所在的图层
 * @param {object} docLayer 实例化的文档图层
 */

function addPoint({ position, attr, service, docLayer }) {
  /* 1-1 ： 设置点要素的位置信息 */
  var gpoint = new Zondy.Object.GPoint(position[0], position[1]) //createPoint();
  //设置当前点要素的几何信息
  var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] })
  /* 1-2 : 设置点要素的样式信息 */
  //描述点要素的符号参数信息
  var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE)
  //设置当前点要素的图形参数信息
  var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
    InfoType: 1, // type 1(点) ,2(线) ,3(面)
    PntInfo: pointInfo,
  })
  // 1-3 : 设置点要素的属性信息
  var attValue = attr.map((item) => item.value)
  // 构建点要素
  var feature = new Zondy.Object.Feature({
    fGeom: fGeom,
    GraphicInfo: webGraphicInfo,
    AttValue: attValue,
  })
  //设置要素为点要素
  feature.setFType(1) // 1(点),2(线),3(面)
  // 创建要素数据集
  var featureSet = new Zondy.Object.FeatureSet()
  //设置属性结构
  var cAttStruct = new Zondy.Object.CAttStruct({
    FldName: attr.map((item) => item.key),
    FldNumber: attr.length,
    FldType: attr.map((item) => item.type),
  })
  featureSet.AttStruct = cAttStruct
  //添加要素到要素数据集
  featureSet.addFeature(feature)
  // 3. 调用中地服务添加要素
  // 第一个参数是地图文档的名称,第二个参数是要素所在的图层
  var editService = new Zondy.Service.EditDocFeature(
    service.docName,
    service.layerId,
    {
      ip: 'localhost',
      port: '6163', //访问IGServer的端口号，.net版为6163，Java版为8089
    }
  )
  //执行添加点要素功能
  editService.add(featureSet, onPntSuccess(docLayer))
}
//添加点要素回调函数
function onPntSuccess(docLayer) {
  return function (data) {
    if (data.succeed) {
      alert('添加点要素成功！')
      docLayer.refresh()
    } else {
      alert('添加点要素失败！')
    }
  }
}
